// 变量R的原型存在于 变量L的原型链上
function instance_of(L, R) {
    // 验证如果为基本数据类型，直接返回false
    const baseType = ['string', 'number', 'boolean', 'symbol']
    if (baseType.includes(typeof (L))) { return false }

    const RP = R.prototype // 指定构造函数的显示原型 
    while (true) {
        L = L.__proto__  // 需要判断的变量L的隐式原型
        if (L === null) {
            return false
        }
        if (L === RP) {
            return true
        }
    }
}

// console.log(typeof ('l'));

/* const foo = (name) => {
    console.log(name);
}

const result = instance_of(foo, Function)
console.log(result); */

function Person(name) {
    this.name = name
}
const lisi = new Person('name')

const result = instance_of(lisi, Object)
console.log(result);